PROGRAM High_Octane_Course_Editor;
GLOBAL
 STRUCT coursedata[9];
  A;
  B;
  C;
  D;
  E;
  F;
  G;
  H;
  I;
  J;
  angleA;
  angleB;
  angleC;
  angleD;
  angleE;
  angleF;
  angleG;
  angleH;
  angleI;
  angleJ;
  other;
  other2;
 END = 0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0;

 farright=0;
 farleft=10;
 farup=10;
 fardown=0;

 blank;
 whitebox;

 structsetx;
 structsety;

 placex;
 placey;

 maxtile=201;
 mintile=200;

 erasing;
 toolbaring;
 menuopen;
 closingmenu;
 movingmap;
 goodtogo;

 music;

 dragging;
 dragy;

 font;

 minimap;

 mini1;
 mini2;
 mini3;
 mini4;
 mini5;

BEGIN
 set_mode(1024768);
 set_fps(100,0);
 load_fpg("hioct.fpg");

 ignore_error(110);
 ignore_error(121);

 font=load_fnt("vsmall.fnt");

// music=load_song("c:/music/dledso~1/spti/around~1.xm",1);
// song(music);

 mouse.graph=3;

 mousetip();

 blank=new_map(2560,2560,1280,1280,9);
 minimap=new_map(256,256,128,128,9);
 whitebox=new_map(255,255,127,127,9);

 piece();
 minime();
 toolbar();

 coursedata[3].other=0;
 coursedata[4].other=10;
 coursedata[5].other=10;
 coursedata[6].other=0;

 start_scroll(0,0,blank,blank,0,0);

 LOOP

  IF (mouse.x==1023 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.x0=scroll.x0+16;
  END

  IF (mouse.x==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.x0=scroll.x0-16;
  END

  IF (mouse.y==767 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.y0=scroll.y0+16;
  END

  IF (mouse.y==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.y0=scroll.y0-16;
  END

  IF (key(_right) AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.x0=scroll.x0+64;
  END

  IF (key(_left) AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.x0=scroll.x0-64;
  END

  IF (key(_down) AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.y0=scroll.y0+64;
  END

  IF (key(_up) AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   scroll.y0=scroll.y0-64;
  END

  structsetx=((mouse.x+scroll.x0)/256);
  structsety=((mouse.y+scroll.y0)/256);

  IF (structsetx>9)
   structsetx=9;
  END

  IF (structsety>9)
   structsety=9;
  END

  IF (erasing>1)
   erasing=0;
  END

  IF (erasing==1 AND mouse.right)
   erasing=0;
  END

  FRAME;
 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS toolbar();
PRIVATE
 xtext;
 ytext;
 xnum;
 ynum;

BEGIN
 graph=5;
 x=512;
 y=751;

 dragbox();

 button(86,2);    //save
 button(131,3);   //load

 button(186,6);   //straights
 button(231,7);   //sharp curves
 button(276,9);   //wide curves
 button(321,8);   //billboards
 button(366,10);  //other

 button(421,1);   //erase
 button(466,5);   //rotate
 button(511,12);  //change tiles

 button(566,11);  //shortcuts

 button(621,4);   //exit

 xtext=write(font,987,y-8,5,"X=");
 ytext=write(font,987,y+8,5,"Y=");
 xnum=write_int(font,1005,y-8,3,&structsetx);
 ynum=write_int(font,1005,y+8,3,&structsety);

 LOOP

  y=dragy;

  FRAME;
 END
END




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS dragbox();
BEGIN
 graph=4;
 x=32;
 y=751;

 LOOP

  IF (collision(TYPE mousetip) AND mouse.left)
   dragging=1;
  END

  IF (dragging==1)
   y=mouse.y;
   mouse.x=x;
  END

  IF (NOT mouse.left)
   dragging=0;
  END

  dragy=y;

  FRAME;
 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS button(x,func);
PRIVATE
 func;
 mousecheck;
 keycheck;
 mouseover;
 text;
 textthere;
 pieceid;

BEGIN
 graph=6;

 icon(func);

 LOOP

  y=father.y;
  mouseover=collision(TYPE mousetip);

  IF (textthere==1)
   delete_text(text);
   textthere=0;
  END



  IF (func==1)
   IF (erasing==1)
    graph=7;
    mouse.graph=8;
   ELSE
    graph=6;
    mouse.graph=3;
   END

   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Erase");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    erasing++;
    mousecheck=1;
    IF (erasing==1)
     message(1);
    ELSE
     message(2);
    END
   END
  END



  IF (func==2)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Save Course");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    choosecourse(1);
   END

   IF (key(_s) AND keycheck==0)
    keycheck=1;
    choosecourse(1);
   END
  END



  IF (func==3)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Load Course");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    choosecourse(2);
   END

   IF (key(_l) AND keycheck==0)
    keycheck=1;
    choosecourse(2);
   END
  END



  IF (func==4)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Exit");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF ((mouseover<>0 AND mouse.left) OR key(_esc))
    exit("Happy Racing",0);
   END
  END



  IF (func==5)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Rotate piece");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    pieceid=get_id(TYPE piece);
    pieceid.angle+=90000;
   END
  END



  IF (func==6)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Straight");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    mintile=200;
    maxtile=201;
    pieceid=get_id(TYPE piece);
    pieceid.graph=201;
   END

   IF (key(_1) AND keycheck==0)
    keycheck=1;
    mintile=200;
    maxtile=201;
    pieceid=get_id(TYPE piece);
    pieceid.graph=201;
   END
  END



  IF (func==7)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Sharp Turn");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    mintile=202;
    maxtile=202;
   END

   IF (key(_2) AND keycheck==0)
    keycheck=1;
    mintile=202;
    maxtile=202;
   END
  END



  IF (func==8)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Banners");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    mintile=204;
    maxtile=216;
   END

   IF (key(_4) AND keycheck==0)
    keycheck=1;
    mintile=204;
    maxtile=216;
   END
  END



  IF (func==9)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Wide Turn");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    mintile=225;
    maxtile=225;
   END

   IF (key(_3) AND keycheck==0)
    keycheck=1;
    mintile=225;
    maxtile=225;
   END
  END



  IF (func==10)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Other Tiles");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    mintile=226;
    maxtile=227;
   END

   IF (key(_5) AND keycheck==0)
    keycheck=1;
    mintile=226;
    maxtile=227;
   END
  END



  IF (func==11)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Shortcut Keys");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    showshortcuts();
   END
  END



  IF (func==12)
   IF (mouseover<>0)
    text=write(font,x,y-31,4,"Change Tiles");
    textthere=1;
   END

   IF (mouseover<>0 AND mouse.left)
    graph=7;
   ELSE
    graph=6;
   END

   IF (mouseover<>0 AND mouse.left AND mousecheck==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
    mousecheck=1;
    pieceid=get_id(TYPE piece);
    pieceid.graph++;
   END
  END



  IF (NOT mouse.left)
   mousecheck=0;
  END

  IF (NOT (key(_s) OR key(_l) OR key(_1) OR key(_2) OR key(_3) OR key(_4) OR key(_5)))
   keycheck=0;
  ELSE
   keycheck=1;
  END

  FRAME;
 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS choosecourse(func);
PRIVATE
 func;
 text;

BEGIN
 graph=30;
 x=512;
 y=384;
 z=-5;

 menuopen=1;

 coursebutton(715,482,6);

 IF (func==1)
  text=write(font,x+50,y-105,4,"Save Course");
  coursebutton(309,286,1);
  coursebutton(309,335,2);
  coursebutton(309,384,3);
  coursebutton(309,433,4);
  coursebutton(309,482,5);
 END

 IF (func==2)
  text=write(font,x+50,y-105,4,"Load Course");
  coursebutton(309,286,7);
  coursebutton(309,335,8);
  coursebutton(309,384,9);
  coursebutton(309,433,10);
  coursebutton(309,482,11);
 END

 LOOP

  IF (menuopen==0)
   delete_text(text);
   BREAK;
  END

  FRAME;
 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS showshortcuts();
PRIVATE
 STRUCT texts[15]
  a;
 END=0;
BEGIN
 graph=30;
 x=512;
 y=384;

 menuopen=1;

 IF (collision(TYPE showshortcuts))
  signal(id,s_kill);
 ELSE
  coursebutton(715,482,12);

  texts[0].a=write(font,x,y-105,4,"Shortcut Keys");

  texts[1].a=write(font,x-250,y-85,0,"S=Save Menu");
  texts[2].a=write(font,x-250,y-65,0,"L=Load Menu");
  texts[3].a=write(font,x-250,y-45,0,"1=Straight");
  texts[4].a=write(font,x-250,y-25,0,"2=Sharp Turn");
  texts[5].a=write(font,x-250,y-5,0,"3=Wide Turn");
  texts[6].a=write(font,x-250,y+15,0,"4=Banners");
  texts[7].a=write(font,x-250,y+35,0,"5=Other Tiles");
  texts[8].a=write(font,x-250,y+55,0,"Right Click=Rotate Tile");
  texts[9].a=write(font,x-250,y+75,0,"Left Click=Place Tile");
  texts[10].a=write(font,x-250,y+95,0,"Esc=Exit");

  texts[11].a=write(font,x-20,y-85,0,"Page Up=Cycle Through Tiles");
  texts[12].a=write(font,x-20,y-65,0,"Page Down=Cycle Through Tiles");

  texts[13].a=write(font,x+70,y-25,1,"On Minimap");
  texts[14].a=write(font,x-20,y-5,0,"Right Click=Set Location");
  texts[15].a=write(font,x-20,y+15,0,"Left Click=Move Map");
 END

 LOOP

  IF (menuopen==0)
   FOR (x=0;x<16;x++)
    delete_text(texts[x].a);
   END
   BREAK;
  END

  FRAME;
 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS coursebutton(x,y,number);
PRIVATE
 number;
 mouseover;
 mousecheck;
 text;

BEGIN
 graph=31;
 z=father.z-1;

 IF (number==1 OR number==7)
  text=write(font,x,y,4,"Course 1");
 END

 IF (number==2 OR number==8)
  text=write(font,x,y,4,"Course 2");
 END

 IF (number==3 OR number==9)
  text=write(font,x,y,4,"Course 3");
 END

 IF (number==4 OR number==10)
  text=write(font,x,y,4,"Course 4");
 END

 IF (number==5 OR number==11)
  text=write(font,x,y,4,"Course 5");
 END

 IF (number==6)
  text=write(font,x,y,4,"Cancel");
 END

 IF (number==12)
  text=write(font,x,y,4,"OK");
 END

 LOOP

  mouseover=collision(TYPE mousetip);

  IF (mouseover<>0 AND mouse.left)
   graph=32;
  ELSE
   graph=31;
  END

  IF (mouseover<>0 AND mouse.left AND mousecheck==0)
   IF (number==1)
    save("course1.dat",&coursedata,sizeof(coursedata));
    save_map(0,minimap,"mini1.map");
    message(3);
   END
   IF (number==2)
    save("course2.dat",&coursedata,sizeof(coursedata));
    save_map(0,minimap,"mini2.map");
    message(3);
   END
   IF (number==3)
    save("course3.dat",&coursedata,sizeof(coursedata));
    save_map(0,minimap,"mini3.map");
    message(3);
   END
   IF (number==4)
    save("course4.dat",&coursedata,sizeof(coursedata));
    save_map(0,minimap,"mini4.map");
    message(3);
   END
   IF (number==5)
    save("course5.dat",&coursedata,sizeof(coursedata));
    save_map(0,minimap,"mini5.map");
    message(3);
   END

   IF (number==6 OR number==12)
    menuopen=0;
   END

   IF (number==7)
    clearcourse();
    load("course1.dat",&coursedata);
    buildcourse();
   END
   IF (number==8)
    clearcourse();
    load("course2.dat",&coursedata);
    buildcourse();
   END
   IF (number==9)
    clearcourse();
    load("course3.dat",&coursedata);
    buildcourse();
   END
   IF (number==10)
    clearcourse();
    load("course4.dat",&coursedata);
    buildcourse();
   END
   IF (number==11)
    clearcourse();
    load("course5.dat",&coursedata);
    buildcourse();
   END

   menuopen=0;
  END

  IF (mouseover<>0 AND number<>6 AND number<>12)
   IF (number>6)
    thumbnail(number-6);
   ELSE
    thumbnail(number);
   END
  END

  IF (menuopen==0)
   delete_text(text);
   BREAK;
  END

  FRAME;
 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS thumbnail(number);
PRIVATE
 number;

BEGIN
 x=512;
 y=384;
 z=father.z-1;
 size=75;

 IF (number==1)
  graph=load_map("mini1.map");
 END
 IF (number==2)
  graph=load_map("mini2.map");
 END
 IF (number==3)
  graph=load_map("mini3.map");
 END
 IF (number==4)
  graph=load_map("mini4.map");
 END
 IF (number==5)
  graph=load_map("mini5.map");
 END

 FRAME;
 unload_map(graph);
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS clearcourse();
PRIVATE
 clearmap;
 clearx;

BEGIN
 unload_map(blank);
 unload_map(minimap);
 blank=new_map(2560,2560,1280,1280,9);
 minimap=new_map(256,256,128,128,9);

 FOR (clearx=0;clearx<10;clearx++)
  coursedata[clearx].A=0;
  coursedata[clearx].B=0;
  coursedata[clearx].C=0;
  coursedata[clearx].D=0;
  coursedata[clearx].E=0;
  coursedata[clearx].F=0;
  coursedata[clearx].G=0;
  coursedata[clearx].H=0;
  coursedata[clearx].I=0;
  coursedata[clearx].J=0;
 END

 signal(id,s_kill);
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS message(number);
PRIVATE
 number;
 text;
 life=300;

BEGIN

 IF (get_id(TYPE message)<>0)
  signal(get_id(TYPE message),s_kill);
 END

 IF (number==1)
  text=write(font,512,384,4,"Erasing Mode On");
 END

 IF (number==2)
  text=write(font,512,384,4,"Erasing Mode Off");
 END

 IF (number==3)
  text=write(font,512,384,4,"Course Saved");
 END

 IF (number==4)
  text=write(font,512,384,4,"Course Loaded");
 END

 LOOP

  life--;

  IF (life<1)
   delete_text(text);
   BREAK;
  END

  FRAME;
 END
END




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS icon(func);
PRIVATE
 func;

BEGIN

 graph=7+func;

 LOOP

  x=father.x;
  y=father.y;

  IF (father.graph==7)
   size=90;
  ELSE
   size=100;
  END

  IF (func>5 AND func<11)
   IF (father.graph==7)
    size=80;
   ELSE
    size=90;
   END
  END

  FRAME;
 END
END




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS mousetip();
BEGIN
 graph=new_map(1,1,0,0,54);
 z=-500;

 LOOP

  x=mouse.x;
  y=mouse.y;

  IF (collision(TYPE toolbar) OR collision(TYPE dragbox) OR collision(TYPE button) OR dragging==1)
   toolbaring=1;
  ELSE
   toolbaring=0;
  END

  IF (collision(TYPE coursebutton) AND mouse.left)
   closingmenu=1;
  END

  IF (NOT mouse.left)
   closingmenu=0;
  END

  FRAME;
 END
END




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS buildcourse();
BEGIN
 placex=0;
 placey=0;

 LOOP

  IF (placex<10)
   IF (placey==0 AND coursedata[placex].A<>0)
    map_xput(0,blank,coursedata[placex].A,(placex*256)+128,(placey*256)+128,coursedata[placex].angleA,101,0);
   END
   IF (placey==1 AND coursedata[placex].B<>0)
    map_xput(0,blank,coursedata[placex].B,(placex*256)+128,(placey*256)+128,coursedata[placex].angleB,101,0);
   END
   IF (placey==2 AND coursedata[placex].C<>0)
    map_xput(0,blank,coursedata[placex].C,(placex*256)+128,(placey*256)+128,coursedata[placex].angleC,101,0);
   END
   IF (placey==3 AND coursedata[placex].D<>0)
    map_xput(0,blank,coursedata[placex].D,(placex*256)+128,(placey*256)+128,coursedata[placex].angleD,101,0);
   END
   IF (placey==4 AND coursedata[placex].E<>0)
    map_xput(0,blank,coursedata[placex].E,(placex*256)+128,(placey*256)+128,coursedata[placex].angleE,101,0);
   END
   IF (placey==5 AND coursedata[placex].F<>0)
    map_xput(0,blank,coursedata[placex].F,(placex*256)+128,(placey*256)+128,coursedata[placex].angleF,101,0);
   END
   IF (placey==6 AND coursedata[placex].G<>0)
    map_xput(0,blank,coursedata[placex].G,(placex*256)+128,(placey*256)+128,coursedata[placex].angleG,101,0);
   END
   IF (placey==7 AND coursedata[placex].H<>0)
    map_xput(0,blank,coursedata[placex].H,(placex*256)+128,(placey*256)+128,coursedata[placex].angleH,101,0);
   END
   IF (placey==8 AND coursedata[placex].I<>0)
    map_xput(0,blank,coursedata[placex].I,(placex*256)+128,(placey*256)+128,coursedata[placex].angleI,101,0);
   END
   IF (placey==9 AND coursedata[placex].J<>0)
    map_xput(0,blank,coursedata[placex].J,(placex*256)+128,(placey*256)+128,coursedata[placex].angleJ,101,0);
   END

   placex++;
  ELSE
   placex=0;
   placey++;
   FRAME;
  END

  IF (placey>9)
   refresh_scroll(0);
   map_xput(0,minimap,blank,128,128,0,10,0);
   message(4);
   BREAK;
  END

 END
END





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS minime();
PRIVATE
 border;
 screen;

BEGIN
// x=895;
 x=128;
 y=128;

 border=draw(2,15,5,0,x-128,y-128,x+128,y+128);
 screen=draw(2,58,15,0,x+(scroll.x0/10),y+(scroll.y0/10),x+(scroll.x0/10)+102,y+(scroll.y0/10)+77);

 LOOP

  move_draw(screen,58,15,x+(scroll.x0/10)-128,y+(scroll.y0/10)-128,x+(scroll.x0/10)+102-128,y+(scroll.y0/10)+77-128);

  IF (collision(TYPE mousetip))
   move_draw(border,15,15,x-128,y-128,x+128,y+128);
   movingmap=1;
   IF (mouse.left)
    x=mouse.x;
    y=mouse.y;
   END
   IF (mouse.right)
    scroll.x0=(((((mouse.x-(x-128))*4)*5)/2)-512);   //0-1024 = 0-2560
    scroll.y0=(((((mouse.y-(y-128))*3)*10)/3)-384);   //0-768  = 0-2560
   END
  ELSE
   IF (NOT mouse.left)
    movingmap=0;
   END
   move_draw(border,15,5,x-128,y-128,x+128,y+128);
  END

  graph=minimap;

  FRAME;
 END
END




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





PROCESS piece();
PRIVATE
 mousecheck;
 keycheck;
 cpx1;
 cpy1;
 cpx2;
 cpy2;
 cpx3;
 cpy3;

BEGIN
 size=101;
 graph=200;

 flags=4;

 ctype=c_scroll;

 LOOP

  get_real_point(1,&cpx1,&cpy1);
  get_real_point(2,&cpx2,&cpy2);
  get_real_point(3,&cpx3,&cpy3);

  x=(((mouse.x+scroll.x0)/256)*256)+128;
  y=(((mouse.y+scroll.y0)/256)*256)+128;

  IF (erasing==1 OR get_id(TYPE choosecourse)<>0 OR get_id(TYPE showshortcuts)<>0 OR closingmenu<>0)
   size=0;
  ELSE
   size=101;
  END

  goodtogo=1;

  IF (graph==225)
   IF (map_get_pixel(0,blank,x,y)<>9 OR
       map_get_pixel(0,blank,cpx1,cpy1)<>9 OR
       map_get_pixel(0,blank,cpx2,cpy2)<>9 OR
       map_get_pixel(0,blank,cpx3,cpy3)<>9)
    goodtogo=0;
   END
  ELSE
   IF (map_get_pixel(0,blank,x,y)<>9)
    goodtogo=0;
   END
  END

  IF (goodtogo==1 AND movingmap==0)
   flags=0;
  ELSE
   flags=4;
  END

  IF (toolbaring==1)
   flags=4;
  END

  IF (mouse.right AND mousecheck==0 AND movingmap==0 AND erasing==0)
   mousecheck=1;
   angle+=90000;
  END

  IF (angle>270000)
   angle=0;
  END

  IF (key(_pgup) AND keycheck==0)
   keycheck=1;
   graph++;
  END

  IF (key(_pgdn) AND keycheck==0)
   keycheck=1;
   graph--;
  END

  IF (NOT mouse.right)
   mousecheck=0;
  END

  IF (NOT (key(_pgup) OR key(_pgdn)))
   keycheck=0;
  END

  IF (graph>maxtile)
   graph=mintile;
  END

  IF (graph<mintile)
   graph=maxtile;
  END

  IF (mouse.left
      AND goodtogo==1
      AND erasing==0
      AND toolbaring==0
      AND closingmenu==0
      AND movingmap==0
      AND get_id(TYPE choosecourse)==0
      AND get_id(TYPE showshortcuts)==0)
   IF (graph==200)
    coursedata[0].other=structsetx;     //sets the start position
    coursedata[1].other=structsety;
    coursedata[2].other=angle;
   END
   IF (structsety==0)
    coursedata[structsetx].A=graph;
    coursedata[structsetx].angleA=angle;
   END
   IF (structsety==1)
    coursedata[structsetx].B=graph;
    coursedata[structsetx].angleB=angle;
   END
   IF (structsety==2)
    coursedata[structsetx].C=graph;
    coursedata[structsetx].angleC=angle;
   END
   IF (structsety==3)
    coursedata[structsetx].D=graph;
    coursedata[structsetx].angleD=angle;
   END
   IF (structsety==4)
    coursedata[structsetx].E=graph;
    coursedata[structsetx].angleE=angle;
   END
   IF (structsety==5)
    coursedata[structsetx].F=graph;
    coursedata[structsetx].angleF=angle;
   END
   IF (structsety==6)
    coursedata[structsetx].G=graph;
    coursedata[structsetx].angleG=angle;
   END
   IF (structsety==7)
    coursedata[structsetx].H=graph;
    coursedata[structsetx].angleH=angle;
   END
   IF (structsety==8)
    coursedata[structsetx].I=graph;
    coursedata[structsetx].angleI=angle;
   END
   IF (structsety==9)
    coursedata[structsetx].J=graph;
    coursedata[structsetx].angleJ=angle;
   END
   map_xput(0,blank,graph,x,y,angle,size,0);
   map_xput(0,minimap,blank,128,128,0,10,0);
   refresh_scroll(0);
  END

  IF (mouse.left AND erasing==1 AND toolbaring==0 AND closingmenu==0 AND get_id(TYPE choosecourse)==0 AND get_id(TYPE showshortcuts)==0)
   IF (structsety==0)
    coursedata[structsetx].A=0;
    coursedata[structsetx].angleA=0;
   END
   IF (structsety==1)
    coursedata[structsetx].B=0;
    coursedata[structsetx].angleB=0;
   END
   IF (structsety==2)
    coursedata[structsetx].C=0;
    coursedata[structsetx].angleC=0;
   END
   IF (structsety==3)
    coursedata[structsetx].D=0;
    coursedata[structsetx].angleD=0;
   END
   IF (structsety==4)
    coursedata[structsetx].E=0;
    coursedata[structsetx].angleE=0;
   END
   IF (structsety==5)
    coursedata[structsetx].F=0;
    coursedata[structsetx].angleF=0;
   END
   IF (structsety==6)
    coursedata[structsetx].G=0;
    coursedata[structsetx].angleG=0;
   END
   IF (structsety==7)
    coursedata[structsetx].H=0;
    coursedata[structsetx].angleH=0;
   END
   IF (structsety==8)
    coursedata[structsetx].I=0;
    coursedata[structsetx].angleI=0;
   END
   IF (structsety==9)
    coursedata[structsetx].J=0;
    coursedata[structsetx].angleJ=0;
   END
   map_xput(0,blank,whitebox,x,y,angle,101,0);
   map_xput(0,minimap,blank,128,128,0,10,0);
   refresh_scroll(0);
  END

  FRAME;
 END
END
